﻿/*
 * Created by SharpDevelop.
 * User: CrOnO
 * Date: 29/09/2011
 * Time: 01:34 a.m.
 * 
 * To change this template use Tools | Options | Coding | Edit Standard Headers.
 */
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Collections.Generic;
using Business_Logic;
using Business_Entity;

namespace PetSoft.GUI.RRHH
{
	/// <summary>
	/// Description of ModificarEmpleado.
	/// </summary>
	public partial class GUIModificarEmpleado : Form
	{
		public BEEmpleado empleado;
		
		public GUIModificarEmpleado()
		{
			try
			{
				//
				// The InitializeComponent() call is required for Windows Forms designer support.
				//
				InitializeComponent();
				
				 /*codigo de privilegios*/
	            
	            this.modDatosBTN.Enabled = false;
	            this.modTurnoBTN.Enabled = false;
	            this.modCalendarioBTN.Enabled = false;
	            
	            for (int i=0;i<BLInfo.usuarioActual.Rol.Privilegio.Count;i++){
	                if ((new BLPrivilegio()).existePrivilegio(2,"RRHH","EMPL",BLInfo.UsuarioActual.Rol.Privilegio)){
	                    this.modDatosBTN.Enabled = true;
	                    this.modTurnoBTN.Enabled = true;
	                    this.modCalendarioBTN.Enabled = true;
	                }
	            }
	                
	            
	            /*end*/
				
				BLTipoDocumento bl1 = new BLTipoDocumento();
				List<BETipoDocumento> lista1 = bl1.obtenerTipoDocumento();
				if (lista1 != null)
	        	{
			        for(int i=0; i<lista1.Count; i++)
			        	this.tipoDocIdCB.Items.Add(lista1[i].Descripcion);
	        	}  
				
				BLArea bl2 = new Business_Logic.BLArea();
				List<BEArea> lista2 = bl2.obtenerArea();
				
				if (lista2 != null)
	        	{
	        		for(int i=0; i<lista2.Count; i++)
			        	this.areaCB.Items.Add(lista2[i].Descripcion);			
	        	}
	
				BLEstadoEmpleado bl3 = new BLEstadoEmpleado();
	        	List<BEEstadoEmpleado> lista3 = bl3.obtenerEstadoEmpleado();
	          	if (lista3 != null)
	        	{
	        		for(int i=0; i<lista3.Count; i++)
	        			if (lista3[i].Descripcion != "ELIMINADO")
			        		this.sitActualCB.Items.Add(lista3[i].Descripcion);			
	        	}
	          	
	          	this.docIdentidadTB.KeyPress += new KeyPressEventHandler(Utils.SoloNumerosTB);
	            this.telCelularTB.KeyPress += new KeyPressEventHandler(Utils.SoloNumerosTB);
	            this.telCasaTB.KeyPress += new KeyPressEventHandler(Utils.SoloNumerosTB);
	            this.telEmergenciaTB.KeyPress += new KeyPressEventHandler(Utils.SoloNumerosTB);
	            this.conEmergenciaTB.KeyPress += new KeyPressEventHandler(Utils.SoloLetrasTB);
	            this.nombreTB.KeyPress += new KeyPressEventHandler(Utils.SoloLetrasTB);
	            this.apPaternoTB.KeyPress += new KeyPressEventHandler(Utils.SoloLetrasTB);
	            this.apMaternoTB.KeyPress += new KeyPressEventHandler(Utils.SoloLetrasTB);
	            this.direccionTB.KeyPress += new KeyPressEventHandler(Utils.SoloLetrasNumerosTB);
				//
				// TODO: Add constructor code after the InitializeComponent() call.
				//
			}
			catch (Exception ex)
			{
				MessageBox.Show("Error: " + ex,"Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
			}
		}
		
		void aceptarClick(object sender, EventArgs e)
		{
			try
			{
				if ((nombreTB.Enabled != false) && (apPaternoTB.Enabled != false) && (tipoDocIdCB.Enabled != false) &&
				    (apMaternoTB.Enabled != false) && (docIdentidadTB.Enabled != false) &&
					(fecNacimientoDTP.Enabled != false) && (sexoCB.Enabled != false) &&
					(direccionTB.Enabled != false) && (telCasaTB.Enabled != false) &&
					(telCelularTB.Enabled != false) && (telEmergenciaTB.Enabled != false) &&
					(conEmergenciaTB.Enabled != false) && (areaCB.Enabled != false) &&
					(cargoCB.Enabled != false) && (sitActualCB.Enabled != false))
				{
					if ((nombreTB.Text == "") || (apPaternoTB.Text == "") || 
					    (tipoDocIdCB.Text == "<Seleccionar>") || (tipoDocIdCB.Text == "") ||
				    	(apMaternoTB.Text == "") || (docIdentidadTB.Text == "") ||
						(fecNacimientoDTP.Text == "") || (sexoCB.Text == "<Seleccionar>") || (sexoCB.Text == "") ||
						(direccionTB.Text == "") || (telCasaTB.Text == "") ||
						((telEmergenciaTB.Text.Length > 0) && (conEmergenciaTB.Text == "")) || 
	        	   		((telEmergenciaTB.Text == "") && (conEmergenciaTB.Text.Length > 0)) ||
						(areaCB.Text == "<Seleccionar>") || (areaCB.Text == "") || 
						(cargoCB.Text == "<Seleccionar>") || (sitActualCB.Text == "<Seleccionar>") ||
						(cargoCB.Text == "") || (sitActualCB.Text == ""))
					{
						String mensaje = "Falta ingresar los siguientes datos: \r\n" + "\r\n";
	        		
		        		if (nombreTB.Text == "") 
		        			mensaje += "NOMBRE" + "\r\n";
		        		if (apPaternoTB.Text == "")
		        			mensaje += "APELLIDO PATERNO" + "\r\n";
		        		if (apMaternoTB.Text == "")
		        			mensaje += "APELLIDO MATERNO" + "\r\n";
		        		if ((tipoDocIdCB.Text == "") || (tipoDocIdCB.Text == "<Seleccionar>"))
		        			mensaje += "TIPO DE DOCUMENTO DE IDENTIDAD" + "\r\n";
		        		if (docIdentidadTB.Text == "")
		        			mensaje += "DOCUMENTO DE IDENTIDAD" + "\r\n";
		        		if (fecNacimientoDTP.Text == "")
		        			mensaje += "FECHA DE NACIMIENTO" + "\r\n";
		        		if ((sexoCB.Text == "") || (sexoCB.Text == "<Seleccionar>"))
		        			mensaje += "SEXO" + "\r\n";
		        		if (direccionTB.Text == "")
		        			mensaje += "DIRECCION" + "\r\n";
		        		if (telCasaTB.Text == "")
		        			mensaje += "TELEFONO CASA" + "\r\n";
		        		if ((conEmergenciaTB.Text.Length > 0) && (telEmergenciaTB.Text == ""))
		        			mensaje += "TELEFONO DE EMERGENCIA" + "\r\n";
		        		if ((conEmergenciaTB.Text == "") && (telEmergenciaTB.Text.Length > 0))
		        			mensaje += "CONTACTO DE EMERGENCIA" + "\r\n";
		        		if ((areaCB.Text == "") || (areaCB.Text == "<Seleccionar>"))
		        			mensaje += "AREA" + "\r\n";
		        		if ((cargoCB.Text == "") || (cargoCB.Text == "<Seleccionar>"))
		        			mensaje += "CARGO" + "\r\n";
		        		
		        		mensaje += "\r\n";
		        		MessageBox.Show(mensaje, "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
					}
					else
					{
						if ((tipoDocIdCB.Text == "DNI") && (docIdentidadTB.Text.Length < 8))
		        		{
		        			MessageBox.Show("El numero de DNI está incompleto.", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
		        		}
		        		else if ((tipoDocIdCB.Text == "CARNET EXTRANJERIA") && (docIdentidadTB.Text.Length < 9))
		        		{
		        			MessageBox.Show("El numero de CARNET EXTRANJERIA está incompleto.", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
		        		}
		        		else if ((tipoDocIdCB.Text == "PASAPORTE") && (docIdentidadTB.Text.Length < 7))
		        		{
		        			MessageBox.Show("El numero de PASAPORTE está incompleto.", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
		        		}
		        		else if (telCasaTB.Text.Length < 7)
		        		{
		        			MessageBox.Show("El numero de TELEFONO CASA está incompleto.", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
		        		}
		        		else if ((telCelularTB.Text.Length > 0) && (telCelularTB.Text.Length < 9))
		        		{
		        			MessageBox.Show("El numero de TELEFONO CELULAR está incompleto.", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
		        		}
		        		else if (((telEmergenciaTB.Text.Length > 0) && (telEmergenciaTB.Text.Length < 7)) || 
		        		         ((telEmergenciaTB.Text.Length > 0) && (telEmergenciaTB.Text.Length == 8)))
		        		{
		        			MessageBox.Show("El numero de TELEFONO EMERGENCIA está incompleto.", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
		        		}
	        			else if ((DateTime.Now.Year - fecNacimientoDTP.Value.Year) > 100)
	        			{
	        				MessageBox.Show("La fecha de nacimiento no es válida. El nuevo empleado no puede tener más de 100 años.", "Aviso", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
	        			}
		        		else if (MessageBox.Show("¿Está seguro que desea modificar los datos de este empleado?", "Pregunta", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
		        		{
							int resultado;
							BLEmpleado bl = new BLEmpleado();
							
							//empleado = new BEEmpleado();
							
							empleado.Nombre = nombreTB.Text;
							empleado.ApPaterno = apPaternoTB.Text;
							empleado.ApMaterno = apMaternoTB.Text;
							empleado.TipoDocIdentidad = tipoDocIdCB.Text;
							empleado.DocIdentidad = docIdentidadTB.Text;
							empleado.FecNacimiento = fecNacimientoDTP.Value;
							empleado.Sexo = sexoCB.Text;
							empleado.Direccion = direccionTB.Text;
							empleado.TelCasa = telCasaTB.Text;
							empleado.TelCelular = telCelularTB.Text;
							empleado.TelEmergencia = telEmergenciaTB.Text;
							empleado.ContactoEmergencia = conEmergenciaTB.Text;
							empleado.Area = areaCB.Text;
							empleado.Cargo = cargoCB.Text;
							empleado.Estado = sitActualCB.Text;
	
							resultado = bl.modificarEmpleado(empleado);
							
							if (resultado == 1)
							{
								MessageBox.Show("Datos del empleado modificados", "Información", MessageBoxButtons.OK, MessageBoxIcon.Information);
								this.Close();
							}
							else if (resultado == 2)
		        				MessageBox.Show("No se pueden modificar los datos porque el empleado ya existe", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
							else
							{
								//MessageBox.Show("Error en la modificación de datos","Error");
							}
		        		}
					}
				}
			}
			catch (Exception ex)
			{
				MessageBox.Show("Error: " + ex,"Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
			}
		}
		
		void cancelarClick(object sender, EventArgs e)
		{
			try
			{
				this.Close();
			}
			catch (Exception ex)
			{
				MessageBox.Show("Error: " + ex,"Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
			}
		}
		
				
		void modificarDatosClick(object sender, EventArgs e)
		{
			this.habilitarTextBoxes();
		}
		
		void modificarCalendarioClick(object sender, EventArgs e)
		{
			try
			{
				if (empleado != null)
				{
					GUIMantenerCalendario ventanaCalendario = new GUIMantenerCalendario();
					ventanaCalendario.llenarDatos(empleado);
					ventanaCalendario.empleado = empleado;
					ventanaCalendario.ShowDialog();
				}
			}
			catch (Exception ex)
			{
				MessageBox.Show("Error: " + ex,"Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
			}
		}
		
		void modificarTurnoClick(object sender, EventArgs e)
		{
			try
			{
				if (empleado != null)
				{
					GUIMantenerTurno ventanaTurno = new GUIMantenerTurno();
					ventanaTurno.llenarDatos(empleado);
					ventanaTurno.empleado = empleado;
					//this.ventanaPopUp.Closing += new CancelEventHandler(this.actualizarGrid);
					ventanaTurno.ShowDialog();
				}
			}
			catch (Exception ex)
			{
				MessageBox.Show("Error: " + ex,"Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
			}
		}
		
        void habilitarCargo(object sender, EventArgs e)
        {
        	try
        	{
	        	if (areaCB.Text != "")
	        	{
	        		if(areaCB.Enabled == true)
	        		{
		        		this.cargoCB.Enabled = true;
	        		}
			        	this.cargoCB.Items.Clear();
			        	this.cargoCB.Items.AddRange(new object[] {
	        	        "<Seleccionar>"});
			        	
			        	BLCargo bl = new BLCargo();
			        		  		 
			        	List<BECargo> lista = bl.obtenerCargo(this.areaCB.Text);
			        	
			        	if (lista != null)
				       	{
			        		for(int i=0; i<lista.Count; i++)
			        			this.cargoCB.Items.Add(lista[i].Descripcion);		
				       	}
				       	else
				       	{
				       		//MessageBox.Show("Error cargando datos de la BD","Error");
				       	}	
		        }
	        	else
	        	{
	        		this.cargoCB.Enabled = false;
	        	}
        	}
        	catch (Exception ex)
			{
				MessageBox.Show("Error: " + ex,"Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
			}
        }
        
        public void llenarDatos(BEEmpleado empleado)
        {
        	try
        	{
	        	this.nombreTB.Text = empleado.Nombre;
	        	this.apPaternoTB.Text = empleado.ApPaterno;
	        	this.apMaternoTB.Text = empleado.ApMaterno;
	        	this.tipoDocIdCB.Text = empleado.TipoDocIdentidad;
	        	this.docIdentidadTB.Text = empleado.DocIdentidad;
	        	this.fecNacimientoDTP.Value = empleado.FecNacimiento;
	        	this.sexoCB.Text = empleado.Sexo;
	        	this.direccionTB.Text = empleado.Direccion;
	        	this.telCasaTB.Text = empleado.TelCasa;
	        	this.telCelularTB.Text = empleado.TelCelular;
	        	this.telEmergenciaTB.Text = empleado.TelEmergencia;
	        	this.conEmergenciaTB.Text = empleado.ContactoEmergencia;
	        	this.areaCB.Text = empleado.Area;
	        	this.cargoCB.Text = empleado.Cargo;
	        	this.sitActualCB.Text = empleado.Estado;
	        	
	        	if (docIdentidadTB.Text != "")
	        	{
	        		if (tipoDocIdCB.Text == "DNI")
	        		{
	        			docIdentidadTB.MaxLength = 8;	
	        		}
	        		else if (tipoDocIdCB.Text == "Carnet de Extranjería")
	        		{
	        			docIdentidadTB.MaxLength = 9;	
	        		}
	        		else if (tipoDocIdCB.Text == "Pasaporte")
	        		{
	        			docIdentidadTB.MaxLength = 7;	
	        		}
	        		else docIdentidadTB.MaxLength = 20;
	        	}
        	}
        	catch (Exception ex)
			{
				MessageBox.Show("Error: " + ex,"Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
			}
        }
        
		public void habilitarTextBoxes()
		{
			try
			{
				this.nombreTB.Enabled = true;
				this.apPaternoTB.Enabled = true;
				this.apMaternoTB.Enabled = true;
				this.tipoDocIdCB.Enabled = true;
				this.docIdentidadTB.Enabled = true;
				this.fecNacimientoDTP.Enabled = true;
				this.sexoCB.Enabled = true;
				this.direccionTB.Enabled = true;
				this.telCasaTB.Enabled = true;
				this.telCelularTB.Enabled = true;
				this.telEmergenciaTB.Enabled = true;
				this.conEmergenciaTB.Enabled = true;
				this.areaCB.Enabled = true;
				this.cargoCB.Enabled = true;
				this.sitActualCB.Enabled = true;
			}
			catch (Exception ex)
			{
				MessageBox.Show("Error: " + ex,"Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
			}
		}
				
		public void deshabilitarTextBoxes()
		{
			try
			{
				this.nombreTB.Enabled = false;
				this.apPaternoTB.Enabled = false;
				this.apMaternoTB.Enabled = false;
				this.tipoDocIdCB.Enabled = false;
				this.docIdentidadTB.Enabled = false;
				this.fecNacimientoDTP.Enabled = false;
				this.sexoCB.Enabled = false;
				this.direccionTB.Enabled = false;
				this.telCasaTB.Enabled = false;
				this.telCelularTB.Enabled = false;
				this.telEmergenciaTB.Enabled = false;
				this.conEmergenciaTB.Enabled = false;
				this.areaCB.Enabled = false;
				this.cargoCB.Enabled = false;
				this.sitActualCB.Enabled = false;
			}
			catch (Exception ex)
			{
				MessageBox.Show("Error: " + ex,"Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
			}
		}
		
		public void habilitarButtons()
		{
			try
			{
				this.modDatosBTN.Visible = true;
				this.modCalendarioBTN.Visible = true;
				this.modTurnoBTN.Visible = true;
			}
			catch (Exception ex)
			{
				MessageBox.Show("Error: " + ex,"Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
			}
		}
		
		public void deshabilitarButtons()
		{
			try
			{
				this.modDatosBTN.Visible = false;
				this.modCalendarioBTN.Visible = false;
				this.modTurnoBTN.Visible = false;
			}
			catch (Exception ex)
			{
				MessageBox.Show("Error: " + ex,"Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
			}
		}
		
		void modDatosClick(object sender, EventArgs e)
		{
			this.habilitarTextBoxes();
		}
		
		void soloNumerosDocID(object sender, KeyPressEventArgs e)
		{
			try
			{
				if ((tipoDocIdCB.Text == "Pasaporte") || (tipoDocIdCB.Text == "DNI"))
				{
					if(!char.IsNumber(e.KeyChar) && !char.IsControl(e.KeyChar))
					{
						e.Handled = true;
					}
					else
					{
						e.Handled = false;
					}
				}	
			}
			catch (Exception ex)
			{
				MessageBox.Show("Error: " + ex,"Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
			}
		}
		

	    void cambiaTipoDocID(object sender, EventArgs e)
        {
	    	try{
	        	if (docIdentidadTB.Text != "")
	        	{
	        		docIdentidadTB.Text = "";
	        		
	        		if (tipoDocIdCB.Text == "DNI")
	        		{
	        			docIdentidadTB.MaxLength = 8;	
	        		}
	        		else if (tipoDocIdCB.Text == "Carnet de Extranjería")
	        		{
	        			docIdentidadTB.MaxLength = 9;	
	        		}
	        		else if (tipoDocIdCB.Text == "Pasaporte")
	        		{
	        			docIdentidadTB.MaxLength = 7;	
	        		}
	        		else docIdentidadTB.MaxLength = 20;
	        	}
	    	}
	    	catch (Exception ex)
			{
				MessageBox.Show("Error: " + ex,"Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
			}
        } 
	}
}
